An integrated development environment (IDE) is a software application that provides functionalities for software development. An IDE, also sometimes called an integrated design environment or integrated debugging environment, typically includes a source code editor, a compiler and/or an interpreter, build automation tools and a debugger. Some IDEs include a version control system. An IDE can also include tools used for development of object-oriented software including but not limited to a class browser, an object inspector, and class hierarchy visualization tools. Other tools can also be included in an IDE.
An IDE is designed to increase developer productivity by providing integrated components that usually have similar user interfaces to reduce the learning curve. Typically an IDE is dedicated to a specific programming language, so as to provide a feature set which most closely matches the programming paradigms of the language. However, some multiple-language IDEs are in use, including Eclipse, ActiveState Komodo, NetBeans, Microsoft Visual Studio®, WinDev, and Xcode.
Known IDEs do not support heterogeneous database artifacts within the same project. For example, a developer who uses Microsoft's Visual Studio® has to keep T-SQL artifacts in one Visual Studio project, XSD artifacts in another Visual Studio project, C# SQL CLR artifacts in a third Visual Studio project and VB.NET SQL CLR artifacts in still another Visual Studio project. This is true because the languages behind each of the different kinds of artifacts is different. Because the languages behind the different types of artifacts is different, supporting a seamless developer experience when moving from one language to another language is difficult. Because editing tools including but not limited to auto-completion, debugging and refactoring tools typically do not cross project boundaries, these tools do not provide comprehensive information to the developer when a solution includes multiple project types. Other tools such as tools for automated deployment may generate incorrect deployment plans because they are operating on a subset of the actual data.